/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ig.util;

import java.util.ArrayList;
import java.util.Collection;

/**
 *
 * @author Ciro
 */
public class Regresion {
    private ArrayList x;
    private ArrayList y;
    private int n;          //n�mero de datos
    public double a, b;    //pendiente y ordenada en el origen


    public Regresion(ArrayList muestras, ArrayList fechas) {
        this.x=x;
        this.y=y;
        n=x.size(); //numero de datos
    }



   
    public void lineal(){
        Double pxy, sx, sy, sx2, sy2;
        pxy=sx=sy=sx2=sy2=0.0;
        for(int i=0; i<n; i++){
            sx+= (Double) x.get(i);
            sy+= (Double) y.get(i);
            sx2+=  (Double) x.get(i)* (Double) x.get(i);
            sy2+= (Double) y.get(i) * (Double) y.get(i);
            pxy+= (Double) x.get(i) * (Double) y.get(i);
        }
        b=(n*pxy-sx*sy)/(n*sx2-sx*sx);
        a=(sy-b*sx)/n;
    }
    public Double correlacion(){
//valores medios
        Double suma=0.0;
        for(int i=0; i<n; i++){
            suma+= (Double) x.get(i);
        }
        Double mediaX=suma/n;

        suma=0.0;
        for(int i=0; i<n; i++){
            suma+= (Double) x.get(i);
        }
        Double mediaY=suma/n;
        //coeficiente de correlacion
        Double pxy, sx2, sy2;
        pxy=sx2=sy2=0.0;
        for(int i=0; i<n; i++){
            pxy+=((Double) x.get(i)-mediaX)*((Double) y.get(i) - mediaY);
            sx2+=((Double) x.get(i)-mediaX)*((Double) x.get(i) - mediaX);
            sy2+=((Double) y.get(i)-mediaY)*((Double) y.get(i) - mediaY);
        }
        return pxy/Math.sqrt(sx2*sy2);
    }
}

